【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】 | 您所在的位置:网站首页 › pyqt5 打包 窗口尺寸 › 【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】 |
目录 下载pyinstaller库 0、pyinstaller语句介绍 1、单个py文件打包成exe 1)只有py文件 假设只有一个py文件:pyinstaller -F xxx.py 加上图标:pyinstaller -F xxx.py -i xxx.ico 取消命令行窗口:pyinstaller -F -w xxx.py -i xxx.ico 2) 不但有py文件,还有其他格式的文件 进入项目所在根目录 运行得到spec文件:pyi-makespec main.py 修改 spec文件 执行 pyinstaller -F main.spec命令 2、多个py文件打包成exe 1)方法一:pyinstaller直接运行得到 2)方法二:多步骤进行 (1)使用命令行窗口进入项目的根目录 (2)在改目录下执行pyi-makespec main.py(main.py是你的主入口文件) (3)修改main.spec文件 (4)执行 pyinstaller -F main.spec命令 (5)在dist/main文件夹里面点击.exe文件 3、携带非py文件打包exe 1)同上述方法二所述 2)方法一+移动data文件夹 4、一些经验和技巧 5、参考链接 下载pyinstaller库pip install pyinstaller 我这里是使用清华的镜像下载的,因为直接使用 pip install 速度会慢一点,使用国内的镜像网站那速度可蹭蹭的快啊。 pip install -i http://pypi.douban.com/simple/ pyinstaller 0、pyinstaller语句介绍pyinstaller -F -w -i xxx.ico xxx.py -p x:\...\site_packages -F:将xxx.py文件打包成一个独立的可执行文件exe,exe文件名为xxx-w:运行exe时不会弹出命令行窗口,不加则在执行exe时会弹出命令行窗口-i:添加xxx.ico图标-p:添加环境site-packages文件夹绝对路径 1、单个py文件打包成exe 1)只有py文件 假设只有一个py文件:pyinstaller -F xxx.pypyinstaller -F xxx.py 运行后会生成一个dist文件夹,文件夹内就是需要的exe文件 在线生成透明ICO图标——ICO图标制作 pyinstaller -F xxx.py -i xxx.ico 取消命令行窗口:pyinstaller -F -w xxx.py -i xxx.ico在运行上述命令生成的exe会出现命令行,取消则运行: pyinstaller -F -w xxx.py -i xxx.ico 或者: pyinstaller -F mycode.py --noconsole 2) 不但有py文件,还有其他格式的文件有时候可能需要和一些配套的文件进行打包,比如图像,TXT等,这时候按照下述进行 进入项目所在根目录比如需要打包的文件为xxx.py,项目名为project,即project\xxx.py的结构 则在命令行通过cd ...\project 进入根目录 如下图假设就打包main,py文件为可执行文件exe,则是进入:bank中 假设文件为main.py,则运行: pyi-makespec main.py 运行后会得到main.spec文件 修改 spec文件刚开始main.spec文件打开后:data为空 下面是我修改过后的: pyinstaller -F -w -i tubiao.ico main.spec 运行后会得到一个dist文件夹,文件夹里面又一个以main命名的文件夹,在mian文件夹里面找到exe即可 2、多个py文件打包成exe 1)方法一:pyinstaller直接运行得到### pyinstaller 所有需要打包的py文件 -p 环境site-packages绝对路径 ### 注意:py文件的路径需要以第一个py文件为准 pyinstaller -w -i data\\fa.ico firstUI_logic.py firstUI.py getFeathers.py nms.py operateUI.py operateUI_logic.py -p D:\softwares_install\Anaconda3\envs\Train\Lib\site-packages 运行后会得到dist,在dist里面的firstUI_logic文件夹中找到exe文件即可 2)方法二:多步骤进行 (1)使用命令行窗口进入项目的根目录
执行完毕之后,会生成一个main.spec文件 (3)修改main.spec文件刚开始main.spec文件打开后是 下面是我修改过后的: 在界面中输入 pyinstaller -F -w -i tubiao.ico pyexe.spec(-i 后面跟着的是exe程序的图标,最后跟.spec文件) (-F:产生一个文件;-w:使用Windows子系统执行,不会打开命令行) pyinstaller -F mycode.py --noconsole 还可以这样pyinstaller -F -w mycode.spec (-w就是取消窗口) 这时候会生成两个文件夹,build和dist。然后.exe文件就在里面,快点开看看吧。 运行后会得到dist,在dist里面的firstUI_logic文件夹中找到exe文件即可 3、携带非py文件打包exe 1)同上述方法二所述 2)方法一+移动data文件夹 运行方法一会得到dist文件夹,dist文件夹中会有一个firstUI_logic文件夹将存放了非py文件的data文件移动到firstUI_logic文件夹下即可注意:因为涉及到非py文件,所以在py文件编写的时候,涉及到引用这些非py文件时,需要对文件的根目录进行获取: 一般是先自动获取得到当前exe的根目录dirfile; 然后通过字符串拼接来得到非py文件的具体文件夹:dirfile + "\data\非py文件名" 4、一些经验和技巧1)在编写时,尽量使用from xxx import xxx,而不是直接import xxx,然后通过xxx.xxx来使用。比如from cv2 import imread,和import cv2,前者只是导入了imread,而后者直接复制了cv2,导致后续打包的exe过大 2)根据以往的经验一般是使用【方法一+移动data文件夹+保留命令行窗口】方法来进行打包,成功率高,且通过命令行来进行exe运行,可以看到有什么异常进而进行修改 pyinstaller -i data\\fa.ico firstUI_logic.py firstUI.py getFeathers.py nms.py operateUI.py operateUI_logic.py -p D:\softwares_install\Anaconda3\envs\Train\Lib\site-packages 注意没有-w,保留了命令行窗口 3)有时候可能会出现导入包错误,可能在打包好的文件夹中对应的包位置缺少了相应的pyd文件,比如pyinstaller打包执行exe出现“ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_group” 上述其实就是说明在打包完成的dist文件夹中的文件夹中对应的库中缺少pyd文件,需要补充上,具体见: pyinstaller打包执行exe出现“ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_group”_python_AI_fans的博客-CSDN博客 .py文件转为.pyd文件_李鑫玉的博客-CSDN博客_python py转pyd 【项目实战】——Python打包正装换底色代码为exe文件(可在其他无Python环境下运行)_python_AI_fans的博客-CSDN博客 |
CopyRight 2018-2019 实验室设备网 版权所有 |